//package com.mzy.datepackage.M2022.Apr.twNine;
//
//import javax.servlet.Filter;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.LinkedHashMap;
//import java.util.Map;
//
///**
// * Created with IntelliJ IDEA.
// *
// * @Author mzy
// * @Date 2022/4/29 14:29
// * @Version 1.0
// */
//public class FilterChainTwo {
//    public class FilterChainTwo {
//
//        private static final Map<String, Filter> FILTER_MAP;
//        private static final Map<String, String> FILTER_CHAIN_MAP;
//        public static final String FILTER_AUTHC = "authc";          //登录拦截
//        public static final String FILTER_PERMS = "perms";          //权限拦截
//        public static final String FILTER_LICENSE = "license";      //license 拦截
//        public static final String FILTER_DB_CHECK = "dbCheck";      //dbCheck 拦截
//        public static final String FILTER_ANON = "anon";            //任意访问
//
//        static {
//            Map<String, Filter> filterMap = new LinkedHashMap<>();
//            filterMap.put(FILTER_AUTHC, new LoginAuthenticatingFilter());
//            filterMap.put(FILTER_PERMS, new AccessAuthorizationFilter());
//            filterMap.put(FILTER_LICENSE, new LicenseFilter());
//            filterMap.put(FILTER_DB_CHECK, new DatabaseFilter());
//
//            Map<String, String> chainMap = new LinkedHashMap<>();
//            putValue(chainMap,
//                    FILTER_ANON,
//                    //放行：swagger
//                    "/swagger/**",
//                    //兼容多个swagger版本
//                    "/*/api-docs",
//                    //放行：前端界面
//                    "/view/**");
//            //放行：后端无须授权
//            putValue(chainMap, "dbCheck",
//                    "/sys/security/license",
//                    "/sys/security/license/register");
//            //限制：license
//            putValue(chainMap, "dbCheck",
//                    "/sys/security/captcha",
//                    "/sys/security/login",
//                    "/sys/security/noLogin",
//                    "/sys/security/noRole");
//            //限制：登录+license
//            putValue(chainMap, "dbCheck",
//                    "/sys/security/notify",
//                    "/sys/boot/module/info",
//                    "/sys/security/logout",
//                    "/sys/security/user/current",
//                    "/sys/security/user/updateCurrentPwd");
//            //限制：登录+授权+license
//            putValue(chainMap, "dbCheck", "/sys/**", "/bus/**");
//            FILTER_MAP = Collections.unmodifiableMap(filterMap);
//            FILTER_CHAIN_MAP = Collections.unmodifiableMap(chainMap);
//        }
//
//        public Map<String, Filter> getFilterMap() {
//            return new HashMap<>(FILTER_MAP);
//        }
//
//        public Map<String, String> getFilterChainMap() {
//            return new LinkedHashMap<>(FILTER_CHAIN_MAP);
//        }
//
//
//        public static void putValue(Map<String, String> map, String val, String... key) {
//            for (String s : key) {
//                map.put(s, val);
//            }
//        }
//
//
//    }
//}
